/* 封装axios===>发ajax */

// 1.先本地安装axios和qs  yarn add axios qs -D
//2.引入axios库和qs
let axios=require('axios');
let Qs=require('qs');

// 3.封装ajax的get和post方式
axios.defaults.baseURL='http://47.96.154.185:3701';


// 请求拦截器
/* 
  请求拦截器: 发送请求时,先拦截下来,带一点东西(设置报文头),再发请求
*/
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  //手动设置token 
  let token=localStorage.getItem('tk');
  if(token){
    config.headers.Authorization='Bearer '+token;
  }else{
    console.log('你不行,没有token');
  }
  return config;
});

// 响应拦截器
/* 
响应拦截器: 后端返数据给前时,先拦截下来,进行统一操作后,再返回给前端---主要操作提示类的东西比较多

*/

//get方式
function get(url,params,callback){
axios.get(url, {params})
  .then(response=>{//成功时的返回数据
    callback(response.data);
  })
  .catch(error=> {//失败时的返回数据
    callback(error);
  });
}


// post方式 Qs.stringify(params)=====把参数作为FormData格式传递
function post(url,params,callback){
axios.post(url, Qs.stringify(params))
    .then(response=>{//成功时的返回数据
    callback(response.data);
  })
  .catch(error=> {//失败时的返回数据
    callback(error);
  });
}


// 上传头像
function upLoadPic(url,data,callback){
  axios.post(url,data)
  .then(res=>{
    callback(res.data)
  }).catch(err=>{
    callback(err.data)
  })
}


// 4.暴露对象
module.exports={
get,
post,
upLoadPic
}